package v4_registry

import (
	"context"
	"database/sql"
)

// Querier select 的终结方法接口
type Querier[T any] interface {
	Get(context.Context) (*T, error)
	GetMulti(context.Context) ([]*T, error)
}

// Executor update insert delete 语句的终结方法接口
type Executor interface {
	Exec(context.Context) (sql.Result, error)
}

// QueryBuilder build方法是 SQL 构造的终结方法
type QueryBuilder interface {
	Build() (*Query, error)
}

// Expression 标记接口
type Expression interface {
	Expr()
}

// Query 封装了 select 语句相关的所有子句
type Query struct {
	SQL  string
	Args []any
}
